package toOffer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;

/**
 * <h3>leetcode</h3>
 *
 * @author BigFaceCat
 * @date 2024/2/2 10:27
 * @description <p>最近最少使用缓存 </p>
 */
public class toOffer5_2_31Todo {

    public static void main(String[] args) {

    }

    public toOffer5_2_31Todo(int capacity) {

    }

    /**
     * 如果缓存中存在键 key，则返回它对应的值；否则返回-1。
     *
     * @param key
     * @return
     */
    public int get(int key) {

        return 0;
    }

    /**
     * 如果缓存中之前包含键 key，则它的值设为 value；否则添加键 key 及对应的值 value。
     * 在添加一个键时，如果缓存容量已经满了，
     * 则在添加新键之前删除最近最少使用的键（缓存中最长时间没有被使用过的元素）。
     *
     * 思路：
     * 用链表存储，每次使用一对kv键值对数据，就把它们挪到链表的最后面。
     * 这样再添加数据的时候，如果链表满了，那么只需要删除第一个数据就可以了
     *
     * @param key
     * @param value
     */
    public void put(int key, int value) {


    }

    /**
     * 调换节点，把使用的节点挪到尾部
     *
     * @param node
     */
    public void sortNode(ListNode node) {

    }

    class ListNode {
        public int key;
        public int value;
        public ListNode next;
        public ListNode prev;

        public ListNode(int k, int v) {
            key = k;
            value = v;
        }
    }

}